#!/usr/bin/python3
# print(__name__) #本模块则为 __main__ 被其他模块调用则为此模块名称

# 将输出的值转成字符串，可以使用 repr() 或 str() 函数来实现
# str()： 函数返回一个用户易读的表达形式

# repr()： 产生一个解释器易读的表达形式

import pickle

s = "I am iron man"

print(str(s))
print(repr(s))  # 字符串则会多一个 ‘’

print(str(1/7))
print(repr(1/7))

# repr会转译字符串中的特殊字符
hello = "hello world\n"
print(str(hello))  # 会换行
print(repr(hello))  # 输出中携带有\n

print("------------------------")

# 将原字符串右对齐,默认使用空格填充至长度 width 的新字符串
for x in range(0, 10):
    print(repr(x).rjust(2), repr(x*x).rjust(3), end=" ")
    print(repr(x*x*x).rjust(4))
print("------------------------")

for x in range(0, 10):
    print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)) # format格式 0 1  2代表参数位置 2d代表长度
                                                                    # 好像是先空格4个在下一个位置打印数据的最后一位 
print()
# 以0填充在左边
print('12'.zfill(5))

print("------------------------")
print('{1} 和 {1}'.format('Google', 'Runoob'))  # 输出两个Runoob

#如果在 format() 中使用了关键字参数, 那么它们的值会指向使用该名字的参数
print("{name}网址：{site}".format(name="菜鸟",site="揍他"))

#位置及关键字参数可以任意的结合
print("{0}网址：{site}".format("菜鸟",site="揍他"))

print('--------------------------------------------------------------------------')

# str = input("请输入：");
# print ("你输入的内容是:", str) #显示上开头会多一个空格


print('--------------------------------------------------------------------------')

# 打开一个文件
f = open("foo.txt","w") 
num = f.write("Python 是一个非常好的语言。\n是的，的确非常好!!\n") # 将string写入文件，并返回字节数
print("num:",num)
# 关闭打开的文件
f.close()

print("------------------------")
# 打开一个文件
f = open("foo.txt","r")
strin = f.readline()         # 读取一行
print(strin)
# 关闭打开的文件
f.close()
print("------------------------")

# 打开一个文件
f = open("foo.txt","r")
strin = f.readlines()         # 读取多行 但是打印任然在同一行
print(strin)    # ['Python 是一个非常好的语言。\n', '是的，的确非常好!!\n']
# 关闭打开的文件
f.close()
print("------------------------")

# 迭代一个文件对象然后读取每行:
f = open("foo.txt", "r")

for line in f:
    print(line)

# 关闭打开的文件
f.close()

print("------------------------")

f = open("foo1.txt","w")
# 非字符串则需要先转换
value = ('www.runoob.com', 14)
s = str(value)  # ('www.runoob.com', 14)
print(s)
f.write(s)

# 关闭打开的文件
f.close()

print('--------------------------------------------------------------------------')

#  pickle模块:  可以将对象以文件的形式存放在磁盘上 读写

# 使用pickle模块将数据对象保存到文件
data1 = {'a': [1, 2.0, 3, 4+6j],
         'b': ('string', u'Unicode string'),
         'c': None}

selfref_list = [1, 2, 3]
selfref_list.append(67)

output = open('data.pkl', 'wb')

# Pickle dictionary using protocol 0.
pickle.dump(data1, output)

# Pickle the list using the highest protocol available.
pickle.dump(selfref_list, output, -1)  #最后一位表示 协议版本

output.close()
print("------------------------")

#!/usr/bin/python3
import pprint

#使用pickle模块从文件中重构python对象
pkl_file = open('data.pkl', 'rb')

data1 = pickle.load(pkl_file)
pprint.pprint(data1)

data2 = pickle.load(pkl_file)
pprint.pprint(data2)

pkl_file.close()